C++ 从拆分字符串定义变量?

C++ 从拆分字符串定义变量?,c++,C++,所以,我编写了这段代码,它基本上将用户输入分割成不同的字符串 比如说 Workspace.Hello.Hey would then be printed out as "Workspace" "Hello" "Hey" 但是,我需要知道如何将它们定义为各自独立的变量,以便以后调用。 这是我的密码 std::string str; std::cin >> str; std::size_t pos = 0, tmp; while ((tmp = str.find

所以,我编写了这段代码,它基本上将用户输入分割成不同的字符串

比如说

Workspace.Hello.Hey would then be printed out as "Workspace" "Hello" "Hey"
但是,我需要知道如何将它们定义为各自独立的变量,以便以后调用。 这是我的密码

std::string str;
    std::cin >> str;
    std::size_t pos = 0, tmp;
    while ((tmp = str.find('.', pos)) != std::string::npos) {
        str[tmp] = '\0';
        std::cout << "Getting " << str.substr(pos) << " then ";
        pos = tmp;
    }
    std::cout << "Getting " << str.substr(pos) << " then ";
std::string str;
std::cin>>str;
标准:尺寸\u t位置=0,tmp;
while((tmp=str.find('.',pos))!=std::string::npos){
str[tmp]='\0';

std::coutC++有一个vectors对象,您可以在其中将它们存储在连续的索引中,并根据需要访问它们


再想想你在做什么,将字符串输入到stringstream中,设置为分隔符,然后将内容读入如上所述的字符串向量可能会更容易。

C++有一个向量对象,你可以将它们存储在连续的索引中,并根据需要访问它们


再想想你在做什么,可能更容易将字符串输入到stringstream中,设置为分隔符,然后将内容读入如上所述的字符串向量中。

将子字符串放入向量中。下面是一个示例:

std::string str;
std::cin >> str;
std::size_t pos = 0, tmp;
std::vector<std::string> values;
while ((tmp = str.find('.', pos)) != std::string::npos) {
    values.push_back(str.substr(pos, tmp - pos));
    pos = tmp + 1;
}
values.push_back(str.substr(pos, std::string::npos));

for (pos = 0; pos < values.length(); ++pos)
{
    std::cout << "String part " << pos << " is " << values[pos] << std::endl;
}
std::string str;
std::cin>>str;
标准:尺寸\u t位置=0,tmp;
std::向量值;
while((tmp=str.find('.',pos))!=std::string::npos){
值。推回(str.substr(pos,tmp-pos));
pos=tmp+1;
}
push_back(str.substr(pos,std::string::npos));
对于(pos=0;posstd::cout将子字符串放入向量中。下面是一个示例:

std::string str;
std::cin >> str;
std::size_t pos = 0, tmp;
std::vector<std::string> values;
while ((tmp = str.find('.', pos)) != std::string::npos) {
    values.push_back(str.substr(pos, tmp - pos));
    pos = tmp + 1;
}
values.push_back(str.substr(pos, std::string::npos));

for (pos = 0; pos < values.length(); ++pos)
{
    std::cout << "String part " << pos << " is " << values[pos] << std::endl;
}
std::string str;
std::cin>>str;
标准:尺寸\u t位置=0,tmp;
std::向量值;
while((tmp=str.find('.',pos))!=std::string::npos){
值。推回(str.substr(pos,tmp-pos));
pos=tmp+1;
}
push_back(str.substr(pos,std::string::npos));
对于(pos=0;pos
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间boost;
int main(){
string text=“Workspace.Hello.Hey”;
向量部分;
拆分(部分,文本,是(“.”)的任意部分);
用于(汽车和零件:零件){
cout您可以使用标记化和拆分字符串。这种方法还有一个额外的好处,即允许您在多个delimeter上拆分字符串。(请参见下文):

#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间boost;
int main(){
string text=“Workspace.Hello.Hey”;
向量部分;
拆分(部分,文本,是(“.”)的任意部分);
用于(汽车和零件:零件){

C++可能需要使用<代码> STD::vector < /代码>,使用PuthSoopBoad将每个字符串添加到vector中。您可能需要使用<代码> STD::vector 使用PASSURBACK将每个字符串添加到vector中。请参阅不太喜欢新的库,当已有的特征已经可以完成时,我可以。@如果没有现有的特征,我就不喜欢新的库了。我可能是这样的。@也许不需要123,但是解析或拆分C++中的字符串有时可能是没有它们的痛苦。这个解决方案在第二个参数中有一个错误: TMP ,这应该是<代码> POS < /代码>相对计数不是绝对偏移。t产生了另一个问题并修复了可用代码。此解决方案在
tmp
的第二个参数中有一个错误,它应该是
pos
-相对计数,而不是绝对偏移量。这产生了另一个问题并修复了可用代码。