我是C++的初学者,我想知道如何做到这一点.我想写一个接受文本行的代码.例如"Hello stackoverflow是一个非常好的网站"
从输出我只想打印前三个单词,跳过其余的.
我想要的输出:"Hello stackoverflow是"
如果是Java,我会使用字符串split().至于C++,我真的不知道.他们的任何类似或C++的方法是什么?
这不是功课,我需要这个为我的程序:)
我问这个问题,因为我在谷歌搜索了大约1个小时,我找不到任何准备好运行的东西.我知道这是一个微不足道的问题,但如果你能帮助我,你将会成为我的一天:)
题:
如何复制字符串中的文本(例如从8个字母到12个字母)并发送到其他字符串?
我有字符串:
string s = "RunnersAreTheBestLovers";
Run Code Online (Sandbox Code Playgroud)
我希望下一个字符串中的8个字母到17个字母的文本
Alice90
我需要C++中的简单程序,它将打开文本文件并逐行查找第二个参数.
文本内容:
1, red
2, blue
3, green
4, orange
Run Code Online (Sandbox Code Playgroud)
所以我需要一个逐行的程序,每行转换成数组(两个元素),然后比较第一个元素和用户交互插入的数字.
因此,如果用户插入2,它逐行,比较阵列行的第一个元素,如果匹配,它打印数组中的第二个元素(蓝色),如果用户键入3,它打印绿色...
我一直在用PHP工作,而且比这更容易,所以我现在有点困惑了......:/
这是代码.我不知道它为什么不承认它需要复制内存,我不能强迫它.
string message="The quick brown fox jumped over the lazy dog.";
vector<char*> words;
while(message.length()>0){
char wtf[message.substr(0,message.find(" ")).c_str().length()]=message.substr(0,message.find(" ")).c_str();
words.push_back(wtf);
message=message.substr(message.find(" ")+1);
}
Run Code Online (Sandbox Code Playgroud)
我看到有类似的线程,但没有.而且,C++似乎无法轻易解决这个问题.
我已经更改了我的代码,现在编译时出现这些错误:
`check.cpp: In function ‘int main()’:`
Run Code Online (Sandbox Code Playgroud)
check.cpp:14:55: error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]
/usr/include/getopt.h:152:12: error: initializing argument 2 of ‘int getopt(int, char* const*, const char*)’ [-fpermissive]
int main() {
string text="-f input.gmn -output.jpg";
int argc=text.length();
cout<<"argc: "<<argc<<endl;
char const * argv = text.c_str();
cout<<"argv: "<<argv<<endl;
int c = getopt (argc, &argv, "f:s:o:pw:h:z:t:d:a:b:?");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个空格分隔的文本文件,我需要从中提取单个单词以填充a vector<string>.
我试过玩strtok,但我知道这不起作用,因为strtok返回a char pointer.有没有办法从文件中提取单词,并string vector用它们填充?谢谢!
这里我有一个字符串表示字符数组.此数组也包含分隔符.现在我想只取出没有这个分隔符的字符串.
我正在使用strtok功能.
我想用这个分隔符分隔我的所有单词.
但是这里我在这段代码中遇到了一些问题.
请让我知道,如果我做错了或告诉我以不同的方式实现这个简单易行的方法,也要考虑内存风险.
这条线pch = strtok (str,&sep);没什么.问题只在这里.
码
/* strtok example */
#include <stdio.h>
#include <string.h>
#define SEPRATOR 0x03
int main ()
{
char str[1024];
int count = 0;
char sep;
memset(str,0,1024);
sep = SEPRATOR;
memcpy(str,"1",strlen("1"));
count = count + strlen("1");
str[count++] = sep;
memcpy(str+count,"0",strlen("0"));
count = count + strlen("0");
str[count++] = sep;
memcpy(str+count,"2",strlen("2"));
count = count + strlen("2");
str[count++] = sep;
memcpy(str+count,"abc_1.0.xyz",strlen("abc_1.0.xyz"));
count = count + strlen("abc_1.0.xyz");
str[count++] = sep;
memcpy(str+count,"3",strlen("3"));
count = …Run Code Online (Sandbox Code Playgroud) 需要经验丰富的工程师帮助.我写了一个函数,它获取一个字符串并从中获取一个子字符串.子串用逗号','分隔.我使用assign()函数来复制子串.我的代码:
void my_function(string devices)
{
unsigned int last=0;
unsigned int address;
printf("whole string: %s\n",devices.c_str());
for (unsigned int z=0; z<devices.size();z++)
{
if(devices[z]==',')
{
zone_name.assign(devices,last,z);
printf("device:%s\n",zone_name.c_str());
address=get_kd_address_by_name(zone_name);
last=z+1;
if(address>0)
{
//doing stuff
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:只有第一次迭代才有效.在终端我得到:
whole string: device1,device2,device3,000001029ADA
device:device1
device:device2,device3
device:device3,000001029ADA
Run Code Online (Sandbox Code Playgroud)
为什么assign()接受','之后的字符?
我有一个文本,格式为"key:value".实际文本可能看起来像是,"Server: nginx"或"Server:nginx"忽略键:和值之间的空格.
什么可能是最快和最短的方式将其分成一个std::pair<std::string, std::string>?
我对编码真的很陌生,并且在尝试在 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[](但我确实需要输入为常量),并且出现分段错误,我不明白为什么。