Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++; 我很困惑何时使用字符串(char),何时使用C++中的字符串指针(char指针)。这里有两个问题。 以下两项中哪一项是正确的 string subString; subString = anotherString.sub(9); string *subString; subString = &anotherString.sub(9); char doubleQuote = aString[9]; if (doubleQuote == "\"") {...} char *doubleQuote = &aString[9]; if (doubleQuote == "\"") {...}_C++_String_Pointers_Reference_Char - Fatal编程技术网

如何在C++; 我很困惑何时使用字符串(char),何时使用C++中的字符串指针(char指针)。这里有两个问题。 以下两项中哪一项是正确的 string subString; subString = anotherString.sub(9); string *subString; subString = &anotherString.sub(9); char doubleQuote = aString[9]; if (doubleQuote == "\"") {...} char *doubleQuote = &aString[9]; if (doubleQuote == "\"") {...}

如何在C++; 我很困惑何时使用字符串(char),何时使用C++中的字符串指针(char指针)。这里有两个问题。 以下两项中哪一项是正确的 string subString; subString = anotherString.sub(9); string *subString; subString = &anotherString.sub(9); char doubleQuote = aString[9]; if (doubleQuote == "\"") {...} char *doubleQuote = &aString[9]; if (doubleQuote == "\"") {...},c++,string,pointers,reference,char,C++,String,Pointers,Reference,Char,以下两项中哪一项是正确的 string subString; subString = anotherString.sub(9); string *subString; subString = &anotherString.sub(9); char doubleQuote = aString[9]; if (doubleQuote == "\"") {...} char *doubleQuote = &aString[9]; if (doubleQuote == "\"")

以下两项中哪一项是正确的

string subString;
subString = anotherString.sub(9);

string *subString;
subString = &anotherString.sub(9);
char doubleQuote = aString[9];
if (doubleQuote == "\"") {...}

char *doubleQuote = &aString[9];
if (doubleQuote == "\"") {...}

没有一个是正确的

字符串的成员函数
sub
不存在,除非您使用的是另一个
string
类不是
std::string

第一个问题的第二个问题
subString=&anotherString.sub(9)
不安全,因为您正在存储临时用户的地址。这也是错误的,因为另一个字符串是指向字符串对象的指针。要调用
sub
成员函数,您需要编写
另一个字符串->sub(9)
。同样,成员函数
sub
不存在

第二个问题的第一个比第二个更正确;您只需将
“\”
替换为
“\”

第二个问题的第二个是错误的,因为:

  • doubleQuote
    不是指第10个字符,而是指从第10个字符开始的字符串
  • doubleQuote==“\”
    可能是类型正确的,但它不会比较两个字符串的相等性;它会检查它们是否指向同一对象。如果要检查两个字符串的相等性,请使用

  • 对于第一个问题,假设sub将返回所提供字符串的子字符串,则为第一个示例

    第二,无:

    char doubleQuote = aString[9];
    if( doubleQuote == '\"') { ... }
    

    呃,您使用的是STL中的字符串吗

    (也就是说,你有

    #include <string>
    #using namespace std;
    
    或者你可以写

    mystring.at(9)
    
    而不是方括号

    在C++中,你可以(也应该)总是使用<代码> STD::String (记住字符串文本实际上是零终止字符数组)。只有当你需要与C代码接口时,才使用<代码> char */COD>。
    C风格的字符串需要易于出错的手动内存管理,需要显式复制字符串(复制指针不会复制字符串),您需要注意一些细节,例如分配足够的内存以容纳终止的
    '\0'
    ,而
    std::string
    自动处理所有这些。

    std::string
    不属于STL.Oh和
    mystring[9]中的std lib部分
    也可以工作。只是
    std::string::at()
    检查它的参数,而
    std::string::operator[]()
    则不检查。这取决于您需要什么。