作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想编写一个程序,在输入的同一行中读取 n
个不同化学元素的名称(其中 1 ≤ n ≤ 17
和 n
也在输入中读取)(名称由空格分开)。化学元素的名称应存储在不同的字符串中以供进一步使用。
由于 n
未知,我不知道如何制作类似“字符串数组”的东西。当然我不应该制作 17 个不同的字符串 st1,st2,st3,...
:D.
你能帮帮我吗?任何帮助将不胜感激,他们将帮助我很多。
提前谢谢你。
最佳答案
听起来你想在一行中阅读并用空格分隔它。尝试这样的事情:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main()
{
std::string input;
std::getline(std::cin, input); // takes one line, stops when enter is pressed
std::stringstream ss(input); // makes a stream using the string
std::vector<std::string> strings;
while (ss >> input) { // while there's data left in the stream, store it in a new string and add it to the vector of strings
strings.push_back(input);
}
for (std::string s : strings) {
std::cout << "string: " << s << std::endl;
}
}
你输入如 H He Li
,按回车键终止,字符串存储在 strings
中(在最后一个循环中打印以供演示)。
编辑:
我现在看到您还想读取输入中的数字 n
。在这种情况下,您不需要 stringstream
解决方案。您可以这样做:
int main()
{
int amount;
std::cin >> amount; // read in the amount
std::vector<std::string> strings;
for (int i = 0; i < amount; i++) {
std::string s;
std::cin >> s; // read in the nth string
strings.push_back(s); // add it to the vector
}
for (std::string s : strings) {
std::cout << "string: " << s << std::endl;
}
}
并传递诸如3 H He Li
之类的输入。
关于c++ - 输入中未知数量的字符串(字母),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53119564/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Combination of List> 我有多个列表,可以是 2 个或 3 个,最多 10 个列表,有多个
我是一名优秀的程序员,十分优秀!