所以我有一个char*.我想在最后切断一些.所以
char *sentence = "My name is Ted";
Run Code Online (Sandbox Code Playgroud)
我该如何切断泰德.我可以把它变成一个字符串,然后使用子字符串(来自Java,这就是我去的方法)但是id而不是那样做.但我不知道怎么用char*来做.
编辑:进一步的问题.问题出在一个函数中,它接受一个进程并且意味着在该进程启动时返回该位置.多数民众赞成我可以得到它.但是参数char*procLocation是通过引用传递的,因此该位置将被发送回那里.
我只能获取包含进程名称的位置.我想切断流程的名称,只返回位置.我已经尝试将该位置设为字符串并执行子字符串(字符串 - processName的长度).没关系.但
procLocation = location.c_str(); // where location.substr is the location - the process name
Run Code Online (Sandbox Code Playgroud)
回复错误:错误C2440:'=':无法从'const char*'转换为'char*'
Luc*_*ore 10
由于这是一个字符串文字,您无法修改它.
如果你这样做:
char sentence[] = "My name is Ted";
Run Code Online (Sandbox Code Playgroud)
你可以简单地之前设置的字符Ted来\0.
你可能会更好用std::string.
您可以使用std::string复制较少字符的构造函数而不是切断文字char*:
const char *data = "Hello, Ted!";
string s(data, data+8);
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)
这打印 Hello, T
这种方法比制作std::string和获取子串更少浪费.