我需要帮助C ++ <string.h>
char表....如何使用&#34; *
&#34;运算符,没有strstr
?例如:&#34; StackOverFlow是在线网站&#34;。我必须切断#Stack; StackOverFlow&#34;并留在表格中#34;是在线网站&#34;使用运算符,没有strstr
。我无法在任何地方找到它。
主要是:
char t[]
int main
{
strcpy(t,"Stackoverflow is online website");
???
(Setting first char to NULL, then strcat/strcpy rest of sentence into table)
}
对不起英文问题/错误命名...我开始学习C ++
答案 0 :(得分:1)
你可以这样做。请更好地解释一下你需要什么。
char szFirstStr[] = "StackOverflow, flowers and vine.";
strcpy(szFirstStr, szFirstStr + 15);
std::cout << szFirstStr << std::endl;
将输出&#34;鲜花和藤蔓&#34;。
对于C ++程序员来说,使用c字符串不是好习惯,使用std::string
类。
答案 1 :(得分:0)
你的代码显然在语法上是不正确的,但我猜你知道这一点。
你的变量t
实际上是一个char数组,你有一个指针指向该char数组的第一个字符,就像你有一个指针指向空终止字符串的第一个字符。您可以做的是将指针值更改为指向字符串的新起点。
您可以这样做,或者如果您确实使用了数组,则可以从要使用的新起点的指针进行复制。因此,如果要复制的数据驻留在由以下内容指向的内存中:
const char* str = "Stackoverflow is an online website";
这在内存中如下所示:
Stackoverflow is an online website\0
str points to: --^
如果您想指向不同的起点,可以将指针改为指向不同的起始位置:
Stackoverflow is an online website\0
str + 14 points to: --------------^
您可以将“i”的地址传递给strcpy
,如下所示:
strcpy(t, str + 14);
显然,你不知道在没有分析的情况下你知道要切断的大小(14),你可能会做的是在字符串中搜索空格后面的第一个字符。
// Notice that this is just a sample of a search that could be made
// much more elegant, but I will leave that to you.
const char* FindSecondWord(const char* strToSearch) {
// Loop until the end of the string is reached or the first
// white space character
while (*strToSearch && !isspace(*strToSearch)) strToSearch++;
// Loop until the end of the string is reached or the first
// non white space character is found (our new starting point)
while (*strToSearch && isspace(*strToSearch)) strToSearch++;
return strToSearch;
}
strcpy(t, FindSecondWord("Stackoverflow is an online website"));
cout << t << endl;
这将输出:是一个在线网站
由于这很可能是学校作业,我将跳过关于更现代的C ++字符串处理的讲座,因为我认为这与学习指针有关。但显然这是对字符串的非常低级别的修改。
答案 2 :(得分:0)