簡體   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