【发布时间】:2021-09-09 05:46:43
【问题描述】:
string 中的vector 接受来自给定string 的输入。
输入:Hello World
预期输出:Hello World
实际输出:你好
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1;
getline(cin, s1);
vector<string> vs1;
string s2;
for (int i = 0; i < s1.size(); i++) {
if (s1[i] != ' ') {
s2.push_back(s1[i]);
continue;
}
if (s1[i] == ' ' || i == s1.size() - 1) {
vs1.push_back(s2);
s2.clear();
}
}
for (string t : vs1) {
cout << t << " ";
}
return 0;
}
【问题讨论】:
-
普通输入运算符
>>以空格分隔。您可以将它与例如std::istringstream将字符串拆分为“单词”。与std::istream_iterator一起,您只需几行即可填充一个向量:std::getline(std::cin, s1); std::istringstream iss1(s1); std::vector<std::string> vs1(std::istream_iterator<std::string>(iss1), std::istream_iterator<std::string>());全部完成,现在vs1包含输入中的所有“单词”。 -
至于您当前的代码,是时候学习如何使用调试器在监控变量及其值的同时逐语句执行代码。
-
OT:不要包含
<bits/stdc++.h>,这是在一些糟糕的学习材料中教授的讨厌的东西。阅读:stackoverflow.com/Questions/31816095/….