按空格对字符串进行标记
Tokenizing a string by space
我有以下char*
char* config = "username 12345 google.com 225";
当尝试通过空格分割它时,我期望结果是字符串中包含的单词的vector<string>
,但是我只得到第一个单词,没有更多。
istringstream iss_str(config);
string token;
// storage for splitted config data
vector<string> tokens;
// port number is an integer value, hence it should
// be type-cast back to integer
int config_int_port = 0;
while( getline(iss_str, token, ' ') ) // I also have replaced space with 00 but to no avail
{
tokens.push_back(token);
}
我得到的结果是一个大小为1的向量,它只包含第一个单词,username
我也用了下面的方法,但结果和前面的一样:
copy(istream_iterator<string>(iss_str),
istream_iterator<string>(),
back_inserter(tokens));
我使用下面的函数来执行上面的代码:
void __cmd_conf(char* __config)
它叫做
__cmd_conf(optarg);
optarg
是linux下一个选项参数的全局变量
这段代码按我的预期工作:
#include <string>
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
int main() {
const char* config = "username 12345 google.com 225";
istringstream iss_str(config);
string token;
// storage for splitted config data
vector<string> tokens;
// port number is an integer value, hence it should
// be type-cast back to integer
int config_int_port = 0;
while( getline(iss_str, token, ' ') )
{
cout << "token " << token << "n";
tokens.push_back(token);
}
cout <<"tokens len "<<tokens.size()<<"n";
}
输出为:
token username
token 12345
token google.com
token 225
tokens len 4
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 移除前面有空格的前2个字符串
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- 在 c++ 中逐行阅读字符串,不要以空格停止
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 如何存储包含多个空格的字符串 c++
- 在特定位置为字符串添加空格
- 有没有办法在 c++ 中获取带有空格的完整字符串?
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- Winsock2:当我尝试发送带有空格的字符串时,该函数在遇到空格时似乎停止发送
- 从没有空格的字符串中提取整数
- 用于拆分空格字符串的程序不起作用
- 解析C++中的完整(从头到尾)字符串,包括所有空格
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 当我的 if 语句在字符串中找到空格时,在无限循环中切换