字符串未存储在向量中

String not getting stored in vector?

本文关键字:向量 存储 字符串      更新时间:2023-10-16
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    string n, m;
    vector <string> dingdong;
    cin >> n;
    dingdong.push_back(n);
    cin >> m;
    dingdong.push_back(m);
    for (int i = 0; i <2; i ++) {
        cout << dingdong[i];
    }

    return 0;
}

当我运行程序并输入"干草身体在那里"并按回车键时。该程序打印"haysombody"。所以我想如果我将"i"增加到 3,程序将打印"haysombodythere",但不,主要只是崩溃。为什么会发生这种情况,我该如何使它存储整个字符串(包括空格(?

"为什么会发生这种情况,我如何使整个字符串(包括空格(被存储?">

要从输入中获取多个单词,您应该使用

std::getline(cin,n);

而不是

std::cin >> n;

默认情况下,空格用作分隔符,因此每次调用std::istreamoperator>>将只存储读取到下一个空格字符的文本。


请在此处查看程序的完全固定版本。


此外,如果您真的想逐字逐句地读入vector,请使用循环这样做

string word;
vector <string> dingdong;
while(cin >> word) {
    if(word.empty) {
        break;
    }
    dingdong.push_back(word);
}

并打印出来,就像

for (int i = 0; i < dingdong.size(); ++i) {
    cout << dingdong[i];
}