我正在研究一些代码,但无法完成此任务。目标是获取通过函数传递的字符串。 示例功能:
void function(string line1, string line2, string line3)
将从main函数输入一个字符串,它将被传递到第一个参数“line1”。此函数的作用是“将字符串拆分为最接近的空白字符,并将字符串的第一部分放在第2行,其余部分放在第3行。
例如,如果传递给line1的字符串是:
"Good Job"
我必须编写一些代码来分割这个字符串并将每个部分分配给第2行和第3行,这样line2 = Good和line3 = Job。
答案 0 :(得分:3)
使用std::stringstream。修改您的函数以通过引用接受最后两个参数:
#include <iostream>
#include <string>
#include <sstream>
void function(const std::string& line1, std::string& line2, std::string& line3){
std::stringstream ss(line1);
ss >> line2 >> line3; // the space character acts as a delimiter
}
int main(){
std::string s2, s3;
function("Good Job", s2, s3);
std::cout << s2 << ' ' << s3;
}
答案 1 :(得分:2)
Ron使用std::stringstream
给出了一个很好的解决方案,这是使用find
和substr
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
void function(string line1, string& line2, string& line3)
{
std::size_t found = line1.find(" ");
if (found!=std::string::npos){
line2 = line1.substr(0,found);
line3 = line1.substr(found+1);
}
}
int main() {
string line1 = "Good Day";
string line2, line3;
function(line1, line2, line3);
cout <<line1<<endl;
cout <<line2<<endl;
cout <<line3<<endl;
return 0;
}
输出: -
Good Day
Good
Day