C ++中的strchr在哪里?

时间:2014-08-07 09:05:57

标签: c++ c c++11

我知道strchr位于<string>。 但 uva10082 给了CE:

code.cpp: In function ‘int main()’:
code.cpp:6:13: warning: unknown escape sequence: '\A'
char x[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";          ^
code.cpp:11:24: error: ‘strchr’ was not declared in this scope
p = strchr(x, char(c));

这是我的代码:(使用c ++ 11编译)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    char x[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
    int c;
    char* p = NULL;
    while ((c = getchar()) != EOF)
    {
        p =strchr(x,char(c));
        if (p)
            cout << *(p-1);
        else
            cout << char(c);
    }
}

3 个答案:

答案 0 :(得分:6)

#include <cstring>  // contains strchr

另外,没有必要将第二个参数转换为char,因为strchr需要int

答案 1 :(得分:2)

你需要

#include<cstring>

拥有strchr()。另外,对于getchar()EOF,您需要

#include<cstdio>

请注意,<string>库包含例如std::string类,而<cstring>包含C字符串函数,如strchr()strcat()等。

所以,strchr()<string> lib中的陈述不正确。

答案 2 :(得分:1)

我猜std::strchr位于#include <cstring>