C ++ String.h Char Tables切断没有strstr的单词

时间:2016-06-09 10:19:16

标签: c++ char operators string.h

我需要帮助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 ++

3 个答案:

答案 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)

作为初学者,为什么要让它变得更难呢?

使用std :: string

SUBSTR() Link