2017-08-28 32 views
-3

我正在处理一些代码,但我无法完成此任务。目标是获取通过函数传递的字符串。 实施例功能:需要帮助分裂一个字符串被传递到一个函数在C++

void function(string line1, string line2, string line3) 

的字符串将从主功能输入,它会被传递到所述第一参数“LINE1”。此功能的工作将是“分割字符串到最近的空白字符,并把在2号线的字符串的第一部分,并在3号线,其余

例如,如果传递到一号线串是:

"Good Job" 

我必须写一些代码,将拆分此字符串的每一部分分配到2,3线使2号线=好和3号线=工作。

+0

分成两半(在最近的空白),或在所述第一空白?这个例子非常模糊。例如'好工作条例草案' – Matt

回答

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; 
} 
2

罗恩给使用std::stringstream这里一个很好的解决方案是使用findsubstr

#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 
+0

@Tas:更正! – Zakir

相关问题