English 中文(简体)
奇怪的行为:
原标题:Strange behaviour of std::string
  • 时间:2012-01-16 01:21:46
  •  标签:
  • c++
  • string

我有这个 p。

#include    <iostream>
#include    <string>
int main()
{
    std::string st = ( = +"10");
    std::cout<<st<<"-"<<st.c_str();
    return 0;    
}

你们期望的是哪类产出没有运行?

页: 1

I am running into such problems while using boost::spirit library and passing its output around as c-strings.

Am I missing something? I am using gcc 4.6.1 (ubuntu 10.10).

最佳回答

这是:

 =  + "10"

或许不会做你所期望的事情。 它将“增加”(相对而言)“ASCII”价值=“10”字面字面上的“10”点,即缓冲超支,因此援引未经界定的行为。

如果你在val忙下执行你的方案,你很可能会看到你对此表示不满。

相反,试图:

std::string st = "=";
st += "10";
问题回答

相反:

#include  <iostream>
#include  <string>
int main()
{
    std::string st = ( = +std::string("10"));
    std::cout<<st<<"-"<<st.c_str();
    return 0;
}

Note "10" is a const char* (pointer). Adding to it will increment the pointer using standard integer arithmetic and not concatenate a string.





相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签