Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';t substr是否在分隔符处停止? 我是C++新手,所以如果是愚蠢的,请不要太苛刻。< / P>_C++_Delimiter_Substr - Fatal编程技术网

为什么';t substr是否在分隔符处停止? 我是C++新手,所以如果是愚蠢的,请不要太苛刻。< / P>

为什么';t substr是否在分隔符处停止? 我是C++新手,所以如果是愚蠢的,请不要太苛刻。< / P>,c++,delimiter,substr,C++,Delimiter,Substr,我想把一根绳子分成两部分。我可以使用substr正确地分隔第一部分,但由于某种原因,当我尝试分隔第二部分时,分隔符后面的内容也会被分隔。我检查了一下,看看它是否能识别出我试图阻止它的位置(位置1),它的位置是否正确,但之后它仍然会占据一切 for(u_int i = 0; i < eachPerson.size(); i++) { string temp, first, last; u_int pos, pos1; temp = eachPerson[i];

我想把一根绳子分成两部分。我可以使用substr正确地分隔第一部分,但由于某种原因,当我尝试分隔第二部分时,分隔符后面的内容也会被分隔。我检查了一下,看看它是否能识别出我试图阻止它的位置(位置1),它的位置是否正确,但之后它仍然会占据一切

for(u_int i = 0; i < eachPerson.size(); i++)
{
    string temp, first, last;
    u_int pos, pos1;
    temp = eachPerson[i];
    pos = temp.find_first_of(' ');
    pos1 = temp.find_first_of(':');
    cout << pos1 << endl;
    first = temp.substr(0, pos);
    last = temp.substr(pos+1, pos1);
    cout << "First: " << first << endl
         << "Last: " << last << endl;
}
for(u_int i=0;icoutsubstr的第二个参数是字符数,而不是最终索引。您需要将第二个调用更改为:

last = temp.substr(pos+1, pos1-pos-1);

顺便说一句,严格来说,在第一次调用
substr
时,您实际上想要获取
pos-1
字符,除非您想要结果字符串中的空格。

substr
的第二个参数是字符数,而不是最终索引。您需要将第二个调用更改为:

last = temp.substr(pos+1, pos1-pos-1);

顺便说一句,严格地说,在第一次调用
substr
时,您实际上想要获取
pos-1
字符,除非您想要结果字符串中的空格。

哦……我应该读两遍引用……尽管如此,谢谢。我现在明白了。哦……我应该读两遍引用……尽管如此,谢谢。我现在明白了。