如何通过空格将一个输入分隔为多个输入
How to separate one input into multiple by the spaces
我对C++还很陌生,正在尝试编写一个程序,可以对我输入的一组名称(按字母顺序)进行排序,但我想这样做,这样我就可以一次输入所有名称;我已经对排序进行了编码,并对多个名称进行了测试,但现在我必须在每个名称后面按enter键来表示新名称。我搜索了一种根据输入中的空格来分隔输入的方法,但我只找到了只分隔前两个单词/名称的方法:
int main(){
string input;
getline(cin, input);
string temp1;
string temp2;
for (int i = 0; i < input.length(); i++){
if (input[i] == ' ') {
temp1.append(input.substr(0, i));
temp2.append(input.substr(i + 1, input.length() - 1));
break;
}
}
cout << temp1 << endl;
cout << temp2 << endl;
}
我曾尝试过将代码分开的部分,并试图让它们在每个空间重复,但我无法使其发挥作用。正如我所说,我对C++还很陌生,所以如果有人能引导我朝着正确的方向前进,或者提出一个更好的方法来完成我正在努力做的事情,那就太好了。
谢谢,
-Eric
---编辑---
示例输入:
William Charlie Sarah Peter Matt John
输出示例:
Charlie John Matt Peter Sarah William
(正如我所说,我已经有了进行名称排序的程序,我只需要知道如何一次输入所有名称,并让程序将第一个名称分配给temp1,第二个分配给temp2,第三个分配给temp3,等等)
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> separate_string(const string& input)
{
istringstream input_stream(input);
string buffer;
vector<string> separated;
while (input_stream >> buffer)
{
separated.push_back(buffer);
}
return separated;
}
int main()
{
string test_string = "William Charlie Sarah Peter Matt John";
auto names = separate_string(test_string);
sort(begin(names),end(names));
for (const auto& s : names)
cout << s << endl;
}
说明:
类型为std::istringstream
的对象input_stream
在构造时采用字符串。然后,您可以像cin
一样使用它。使用提取运算符>>
,字符串已经由空格字符分隔。
while循环在到达输入字符串的末尾时停止。
分离的字符串存储在字符串的矢量中。
main
只是一个测试程序。你可以写自己的来完成你的使命。
相关文章:
- C++如何通过用户输入删除列表元素
- 通过for循环使用用户输入填充列表
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 获取通过重定向传入的输入文件的名称?
- Arduino Nano:A4988 使用串行输入时通过定时器进行步进控制不稳定
- 为什么不能通过在错误输入后设置 std::cin.clear() 来使用 std::cin?
- 通过功能进行2D矢量输入和显示
- C++ 通过输入创建对象
- 如何通过 API 为 tflite 提供多维输入C++
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- 跳转到通过输入坐标定义的控制台屏幕位置
- TFLite 隔离错误,通过获取C++输入和输出
- C++ .我正在尝试通过使用开关内的数组来获取用户输入,但是当我运行代码时,它显示分段错误?
- 如何通过一次运行将多个输入样本馈送到C++张量流模型
- 通过终端在文件中输入时检测EOF(文件结束)时出现问题
- 如何通过输入十进制数打印UTF-8符号?
- 通过与输入进行比较来安排输出
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 为什么我的单行输入仅通过循环部分读取
- 我应该使用 DeviceContext 函数在管道中循环输入还是通过创建来输入