如何使用 stringstreams 求字符串中整数的总和?
How to use stringstreams to find the sum of integers inside a string?
我有一个包含 6 个整数的字符串 '''string myStr = "1 2 3 4 5 6"'''
我想使用字符串流来单独读取所有这些数字,然后将它们全部加起来求和。
这是作业问题的一部分,只是为了澄清,我需要使用 stringstreams 作为读取字符串并将其中所有数字相加的方法。
提示如下:
"Create a string with a series of six numbers. With the help of a stringstream, add all numbers in the string"
注意:
抱歉,如果这是一个结构错误的问题。对我如何使这一点更清楚的任何批评表示赞赏。
我一直在寻找一种方法来执行此操作,但我无法准确理解其工作原理。
我知道您需要使用“'ostringstream'”或“'istringstream'”来完成我想做的任何事情。但是我不知道怎么用。
我有一本教科书 "Murach's C++ Programming",这是我们在 class 中供参考的书。但是除了从文本文件中读取之外,它没有涉及任何其他上下文中的字符串流。
void stringstreams(string myStr = "1 2 3 4 5 6"){
stringstream strStream;
strStream << myStr;
myStr = strStream.str();
cout << myStr << endl;
}
描述结果:
我认为所有这一切都是将字符串发送到字符串流中,然后以另一种方式将其发送回去(我可能完全错了)。我不确定该怎么做,因为我没有任何使用 stringstream 的经验。
看看这个简单的注释代码是否有帮助:
int main() {
std::string myStr = "1 2 3 4 5 6";
std::stringstream ss{ myStr}; // Initialize the stringstream; use stringstream instead if you are confused with ostringstream vs istringstream
string str;
int sum = 0;
while (getline(ss, str, ' ')) { // split stringstream into tokens separated by a whitespace
sum += std::atoi(str.c_str()); // convert each string to c- equivalent before converting to integer using atoi
}
std::cout << sum << endl;
}
这是使用 std::stringstream
的另一种方法,无需手动将字符串转换为整数:
#include <sstream>
#include <string>
#include <iostream>
int main()
{
std::string myStr = "1 2 3 4 5 6";
std::stringstream strm(myStr);
int value;
int sum = 0;
while (strm >> value)
sum += value;
std::cout << sum << "\n";
}
我有一个包含 6 个整数的字符串 '''string myStr = "1 2 3 4 5 6"'''
我想使用字符串流来单独读取所有这些数字,然后将它们全部加起来求和。
这是作业问题的一部分,只是为了澄清,我需要使用 stringstreams 作为读取字符串并将其中所有数字相加的方法。
提示如下:
"Create a string with a series of six numbers. With the help of a stringstream, add all numbers in the string"
注意: 抱歉,如果这是一个结构错误的问题。对我如何使这一点更清楚的任何批评表示赞赏。
我一直在寻找一种方法来执行此操作,但我无法准确理解其工作原理。
我知道您需要使用“'ostringstream'”或“'istringstream'”来完成我想做的任何事情。但是我不知道怎么用。
我有一本教科书 "Murach's C++ Programming",这是我们在 class 中供参考的书。但是除了从文本文件中读取之外,它没有涉及任何其他上下文中的字符串流。
void stringstreams(string myStr = "1 2 3 4 5 6"){
stringstream strStream;
strStream << myStr;
myStr = strStream.str();
cout << myStr << endl;
}
描述结果:
我认为所有这一切都是将字符串发送到字符串流中,然后以另一种方式将其发送回去(我可能完全错了)。我不确定该怎么做,因为我没有任何使用 stringstream 的经验。
看看这个简单的注释代码是否有帮助:
int main() {
std::string myStr = "1 2 3 4 5 6";
std::stringstream ss{ myStr}; // Initialize the stringstream; use stringstream instead if you are confused with ostringstream vs istringstream
string str;
int sum = 0;
while (getline(ss, str, ' ')) { // split stringstream into tokens separated by a whitespace
sum += std::atoi(str.c_str()); // convert each string to c- equivalent before converting to integer using atoi
}
std::cout << sum << endl;
}
这是使用 std::stringstream
的另一种方法,无需手动将字符串转换为整数:
#include <sstream>
#include <string>
#include <iostream>
int main()
{
std::string myStr = "1 2 3 4 5 6";
std::stringstream strm(myStr);
int value;
int sum = 0;
while (strm >> value)
sum += value;
std::cout << sum << "\n";
}