繁体   English   中英

c ++拆分字符串

[英]c++ splitting up a string

我正在自学一本书学习c ++而且我一直在练习。 我应该将一个字符串分成两部分,每个部分用空格分隔,然后忘记其余部分,但我的代码不会因为某种原因忘记其余部分。

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int main(){

string original;
string first;
string second;

bool firstDone = false;
bool secondDone = false;

int firstSpace = 0;
int secondSpace = 0;

cout << "Enter string: ";

getline(cin, original);

cout << "The original string is: " << original << endl;

for(int i = 0; i < original.length(); i++)
{
    if(original[i] == ' ' && !firstDone){
        firstSpace = i;
        firstDone = true;
    }
    else if(original[i] == ' ' && !secondDone){
        secondSpace = i;    
        secondDone = true;
    }
}

cout << "The first space is at: " << firstSpace << endl << "The second space is at: " 
     << secondSpace << endl;

first = original.substr(0, firstSpace);
second = original.substr(firstSpace + 1, secondSpace);

cout << "The first string is: " << first << endl << "The second string is: "
     << second << endl;

return 0;

}

当我跑它时,我得到了

输入字符串:test1 test2 test3

原始字符串是:test1 test2 test3

第一个空间是:5

第二个空间是:11

第一个字符串是:test1

第二个字符串是:test2 test3

正如你所看到的那样,第二个字符串是“test2 test3”,它应该只是“test2”。 谁能指出我做错了什么?

ps我在书中并不是很远,我在网上找到的许多其他解决方案都有一堆我不熟悉的变量和其他功能,所以我们可以限制我使用过的风格的答案(如果可能的话)。

实际上,substr()第二个参数是您在第一个参数中提到的起始偏移量的字符串长度。 如下所示:

second = original.substr(firstSpace + 1, secondSpace-(firstSpace+1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM