相关疑难解决方法(0)

char*vs cd中的std :: string

std::string什么时候应该使用,什么时候应该char*用来管理charC++中的s 数组?

char*如果性能(速度)至关重要,并且由于内存管理,您愿意接受一些有风险的业务,那么您似乎应该使用它.

是否还有其他需要考虑的方案?

c++ arrays stl stdstring

79
推荐指数
7
解决办法
7万
查看次数

char*和char []之间的区别

我知道这是一个非常基本的问题.我很困惑为什么以及如何以下不同.

char str[] = "Test";
char *str = "Test";
Run Code Online (Sandbox Code Playgroud)

c++

30
推荐指数
6
解决办法
2万
查看次数

我糊涂了!C++中的Char,Char*或String

当我使用char或char*时,visual studio 2012(11)只会播放最后一个字符,例如:

#include <iostream>
#include <string>
int main(){
 using namespace std;
 char chName = 'Alex'; 
 cout<<chName;
}
Run Code Online (Sandbox Code Playgroud)

它只显示"x".它是正确的是我使用 string strName = "Alex" 但在那些有参数作为char的函数中,字符串不能作为参数传递.在这种情况下,VS编译器说字符串不能转换为int.还告诉我char和char*之间有什么区别.我是一名PHP开发人员,C++非常混乱.请帮我.

c++ c-strings

5
推荐指数
2
解决办法
3621
查看次数

自动类型转换为std :: string和char*之间的C++差异

作为一个学习练习,我一直在研究自动类型转换在C++中的工作原理.我知道通常应该避免自动类型转换,但我想通过了解它的工作原理来增加我对C++的了解.

我已经创建了一个StdStringConverter可以自动转换为a的类std::string,但编译器(Debian上的g ++ 4.3.4)似乎不会在将对象与real进行比较时进行转换std::string(请忽略缺少传递引用和不必要的临时对象创建):

#include <string>

class StdStringConverter
{
public:
    explicit StdStringConverter(std::string name) : m_name(name) {}
    operator const std::string () const { return m_name; }
private:
    std::string m_name;
};

int main()
{
    StdStringConverter converter(std::string("Me"));
    const std::string name = "Me";
    // Next line causes compiler error:
    // no match for 'operator==' in 'converter == name'
    return (converter == name) ? 0 : 1;
}
Run Code Online (Sandbox Code Playgroud)

在另一方面,如果我稍微改变到一个CStringConverter类,自动转换不会发生,但比较char可能的指针是不是我想要的结果:

#include <string> …
Run Code Online (Sandbox Code Playgroud)

c++ type-conversion cstring stdstring

4
推荐指数
1
解决办法
3931
查看次数

“const char *”和“const string”之间的确切技术区别是什么

我需要对我要问的问题进行深入的技术解释,而不是解决方案。

我已经学习了一个星期的指针,我理解得很好。但是在编写程序时,我偶然发现了这个错误:

无法将参数“2”的“const std::string”转换为“const char*”到“char* strcpy(char*, const char*)”

所以我很容易地解决了string.c_str()没有问题。但我对为什么会这样很感兴趣。我一直在疯狂地寻找为什么 const 字符串与constchar * 不同。当人们解释一个字符串时,他们说它与 char * 没有什么不同,那么为什么在字符串之前添加一个 const 不会使它成为一个const char *

string constants char

4
推荐指数
1
解决办法
6134
查看次数

std :: string vs char数组用于静态const

我想在我的cpp文件中的多个位置使用字符串常量.我应该使用std :: string还是char []?

static const std::string kConstantString = "ConstantStringValue";

static const char kConstantString[] = "ConstantStringValue";
Run Code Online (Sandbox Code Playgroud)

我被告知更喜欢后者,因为它"避免静态分配".char数组是否也必须静态分配?

c++ arrays static

4
推荐指数
1
解决办法
1682
查看次数

为什么"char"在结构类型中是一个糟糕的编程实践?

我在c ++编程语言中看到一些建议,比如"不要在struct类型中使用char",

struct Student{
    int stdnum, FieldCode, age;
    double average, marks, res[NumOfCourses];
    char Fname[20], Lname[20], cmp[20];
};
Run Code Online (Sandbox Code Playgroud)

最好使用:

struct Student{
    int stdnum, FieldCode, age;
    double average, marks, res[NumOfCourses];
    string Fname, Lname, cmp;
};
Run Code Online (Sandbox Code Playgroud)

关于此事,欢迎任何其他建议

先感谢您

c++ struct

2
推荐指数
1
解决办法
324
查看次数

C++字符串输入

我的书说如果我想读一个最大长度为40个字符的字符串,我必须声明一个长度为41的变量,但它没有说明原因.

char name[41];
cin >> name;
cout << name << endl;
Run Code Online (Sandbox Code Playgroud)

我知道这是一个新手问题,我确实是一个C++新手.

我希望你能帮助我.谢谢.

编辑:

感谢您的回答,我没想到在如此短的时间内获得如此多的好消息.

  1. 谁负责在char数组的末尾插入NULL终止符?

  2. 按Enter后"\n"会发生什么?

再次感谢.

c++

1
推荐指数
1
解决办法
1893
查看次数

制作字符串的不同方法?

我是c ++的新手,我想从一开始就知道,

这些制作字符串的方法是否完全以相同的方式工作,并且在每种情况下始终给出完全相同的结果?他们中的任何一个结果有什么不同吗?

1) char greeting [6] = { 'h','e','l','l','o','\0' };

2) char greeting[] = "hello";

3) #include <string>
   string greeting = "hello";
Run Code Online (Sandbox Code Playgroud)

c++ string

1
推荐指数
1
解决办法
131
查看次数