我对编码真的很陌生,并且在尝试在 C++ 中拆分字符串时遇到了一些麻烦。我想知道如何拆分字符串,该字符串const char names[] (i.e. "Mary, Jan, Jane")在 C++ 中作为 a 输入,而不使用任何外部库(即我不想使用#include <string>等 - 尽管我可以使用#include <cstring>)。
我尝试过使用:
const char names[] = "Mary, Jan, Jane";
char *token = strtok(names, ",");
while (token != NULL) {
token = strtok(NULL, " ");
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法传递一个 const 字符数组,我还想知道如何访问所有单独的“令牌”?
另外,我尝试将输入更改为 just char names[](但我确实需要输入为常量),并且出现分段错误,我不明白为什么。
我需要一个解决方案,使用基于姓氏的C++对unix pwd文件进行排序.该文件的格式是用户名,密码,uid,gid,name,homedir,shell.所有都是由冒号分隔符分隔.名称字段包含按姓氏分隔的名字,按空格分隔我可以使用地图对值进行排序,我发布了我的代码.有人可以向我建议我可以对我的代码做些改进吗.此外,我无法在我的文件中看到排序的行.
string line,item;
fstream myfile("pwd.txt");
vector<string> lines;
map<string,int> lastNames;
map<string,int>::iterator it;
if(myfile.is_open())
{
char delim =':';
int count =0;
while(!myfile.eof())
{
count++;
vector<string> tokens;
getline(myfile,line);
istringstream iss(line);
lines.push_back(line);
while(getline(iss,item,delim))
{
tokens.push_back(item);
}
cout<<tokens.size()<<endl;;
size_t i =tokens[4].find(" ");
string temp = tokens[4].substr(i,(tokens[4].size()-i));
cout<<temp<<endl;
lastNames.insert(pair<string,int>(temp,count));
tokens.clear();
}
myfile.seekg(0,ios::beg);
for(it=lastNames.begin();it!=lastNames.end();it++)
{
cout << (*it).first << " => " << (*it).second << endl;
int value=lastNames[(*it).first ];
myfile<<lines[value-1]<<endl;
cout<<lines[value-1]<<endl;
cout<<value<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我有问题写入文件我无法看到排序的结果.
我的问题:
Can someone please explain me why I am unable to …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的字符串:
char *message = "12#34#56#78#90"
Run Code Online (Sandbox Code Playgroud)
我想得到:
a = "12"
b = "34"
c = "56"
d = "78"
d = "90"
Run Code Online (Sandbox Code Playgroud)
谁能给我一个好方法?
可能重复:
如何在C++中拆分字符串?
C++拆分字符串
我如何从文件中拆分C++中的行,如下所示?
我想保存具有以下格式的游戏输出结果:
CFC 1 - 0 RES
Run Code Online (Sandbox Code Playgroud)
我有四个变量:
string team1;
string team2;
int goalst1;
int goalst2;
Run Code Online (Sandbox Code Playgroud)
如何拆分字符串,使每个相应的部分都在上面的四个变量中?
我在一个项目中使用VC++ 10.作为C/C++的新手,我只是谷歌搜索,似乎在标准C++中没有正则表达式?VC++ 10似乎有正则表达式.但是,我如何进行正则表达式拆分?我是否需要提升?
在网上搜索,我发现许多人推荐使用Boost进行许多操作,标记/拆分字符串,解析(PEG),现在甚至是正则表达式(尽管这应该是内置的......).我能否得出结论提升是必须的?它的180MB只是琐碎的东西,在许多语言中天真地支持?
使用if 和 while/do- while,我的工作是以相反的顺序打印以下用户的输入(字符串值).
例如:
输入字符串值:"你是美国人"以相反的顺序输出:"American are You"
有没有办法做到这一点?
我试过了
string a;
cout << "enter a string: ";
getline(cin, a);
a = string ( a.rbegin(), a.rend() );
cout << a << endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
...但这会颠倒单词和拼写的顺序,而拼写不是我想要的.
我也应该加入if和while声明,但不知道如何.
我有以下字符串"0 1 2 3 4"(字符串末尾有一个空格).我想拆分并添加到字符串向量.当我使用循环和字符串流时,程序将自身循环到最后一个数字为4的无限循环中.它不想停止.
如何拆分以下内容并同时添加到字符串向量.
请指教.
stringstream ss(currentLine);
for(int i=0;i<strlen(currentLine.c_str());i++){
ss>>strCode;
strLevel.push_back(strCode);
}
Run Code Online (Sandbox Code Playgroud) 你好,所以我基本上都是想做这样的事情.
PrintOpt("Hello | I | Am | Awesome");
Run Code Online (Sandbox Code Playgroud)
在我的PrintOpt代码中
void PrintOpt(char* Text){
if(!strcmp(Text, " | ")){
Text = "\n";
}
printf(Text);
}
Run Code Online (Sandbox Code Playgroud)
我希望它能像这样打印出来
Hello
I
Am
Awesome
(On a new line)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,它不打印任何东西.有谁知道为什么这不起作用?谢谢
(example.txt)
Tommy:16:Male
Sam:23:Female
Run Code Online (Sandbox Code Playgroud)
我想用C++编写代码,使用ifstream而不是整行来从文本文件中获取数据.例如,第一列代表Name,我只想获取Name数据.
有没有办法分割":"这个字符,就像Java line.split(":")一样.
我正在学习 C++ 以进行竞争性编程。我最近遇到一个问题,需要将字符串拆分为向量(我来自Python和JavaScript背景,所以有一个简单的内置函数负责拆分字符串)
C++中有类似的东西吗?一种节省时间的简单方法。我很感激你的意见
谢谢你!