相关疑难解决方法(0)

在C++中使用数组或std :: vectors,性能差距是多少?

在我们的C++课程中,他们建议不再在新项目中使用C++数组.据我所知,Stroustroup本人建议不要使用数组.但是有显着的性能差异吗?

c++ arrays vector

197
推荐指数
9
解决办法
16万
查看次数

C++中字符串和char []类型之间的区别

我知道一点C,现在我正在看看C++.我习惯使用char数组来处理C字符串,但是当我看到C++代码时,我看到有使用字符串类型和字符串数组的示例:

#include <iostream>
#include <string>
using namespace std;

int main () {
  string mystr;
  cout << "What's your name? ";
  getline (cin, mystr);
  cout << "Hello " << mystr << ".\n";
  cout << "What is your favorite team? ";
  getline (cin, mystr);
  cout << "I like " << mystr << " too!\n";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

#include <iostream>
using namespace std;

int main () {
  char name[256], title[256];

  cout << "Enter your name: ";
  cin.getline (name,256);

  cout << "Enter your …
Run Code Online (Sandbox Code Playgroud)

c++ string types

118
推荐指数
4
解决办法
20万
查看次数

在C++中定义类字符串常量?

我已经看到了这两种风格的代码,我不确定一个是否比另一个更好(它只是风格问题)?你有什么建议可以选择一个而不是另一个.

 //Example1
 class Test {

    private:
        static const char* const str;

};

const char* const Test::str = "mystr";

//Example2
class Test {

     private:
         static const std::string str;

};

const std::string Test::str ="mystr";
Run Code Online (Sandbox Code Playgroud)

c++

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

C++ - char*vs. string*

如果我有一个指向字符串变量的指针,array of chars那么键入是否有区别:

char *name = "name";
Run Code Online (Sandbox Code Playgroud)

和,

string name = "name";
Run Code Online (Sandbox Code Playgroud)

c++ string pointers char

14
推荐指数
4
解决办法
5万
查看次数

何时使用std :: string vs char*?

可能重复:
C++ char*vs std :: string

我是来自C#的C++的新手,但我确实更喜欢C++.

我有一个抽象类,定义了两个常量字符串(不是静态的).我想知道是否const char*会有更好的选择.我仍然掌握着C++标准,但我只是觉得在这种特殊情况下我没有任何理由需要使用std :: string(没有追加或编辑字符串,只是写入控制台通过printf).

我应该坚持std::string每一个案例吗?

c++ std

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

“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
查看次数

如何在跨平台(Windows,iOS,Android)C++应用程序中表示字符串?

我正在开发一个应用程序,其核心代码库将是Windows,iOS和Android的跨平台.

我的问题是:我应该如何在内部表示此应用程序使用的字符串,以便能够在所有三个平台上有效地使用它们?

值得注意的是,我在Windows中大量使用DirectWrite,其中API函数通常期望传递wchar_t*(顺便说一句,API文档声明"指向Unicode字符数组的指针.",我不是知道这是否意味着它们是否采用UTF-16编码)

我看到了三种不同的方法(但是我发现很难掌握使用C++以跨平台方式处理Unicode字符串的细节,所以也许我会错过一些重要的概念):

  • 在内部使用std :: string(并以UTF-8编码存储字符串?),并将它们转换为Wchar_t*,DirectWrite API需要它(我不知道文本处理API需要什么)还有Android和iOS).
  • 在任何地方内部使用std :: wstring.如果我理解正确,从内存使用角度来看这不会有效,因为在iOS和Android上wchar_t是4个字节(这意味着我必须在Windows上以UTF-16存储字符串,并且Android/iOS上的UTF-32?)
  • 使用抽象基类为字符串创建抽象,并专门为不同平台实现内部存储.

什么是最好的解决方案?顺便说一句,是否有任何现有的跨平台库抽象字符串处理?(以及读取和序列化Unicode字符串)

(更新:删除了有关char*和std :: string差异的问题的部分.)

c++ windows directx android ios

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

是否更快地访问char*或std :: string的元素?

在c ++中看过char*vs std :: string,但我仍然想知道访问a的元素char*是否比快std::string.

如果您需要知道,char*/ std::string将包含少于80个字符,但我想知道如果有一个截止值.

如果存在差异,我也想知道不同编译器和不同操作系统对这个问题的答案.

提前致谢!

编辑:我将使用array[n],访问元素,并将值设置一次.

(注意:如果这不符合帮助中心的要求,请告诉我如何在投票之前重新改写它)

c++ arrays string performance c++11

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

返回字符串引用是下面的最佳案例

假设我正在设计一个接口,以返回子类的名称.请注意,对于子类的不同实例,它们的名称应保持不变.

为了提高速度和内存效率,我想说第三种方法签名可能是最好的(根据char*vs cd中的std :: string的一些注释)

virtual const std::string& name2() const = 0;
Run Code Online (Sandbox Code Playgroud)

我想知道有更好的选择吗?

#include <cstdio>
#include <string>

class baby_interface {
public:
    virtual const char* name0() const = 0;
    virtual std::string name1() const = 0;
    virtual const std::string& name2() const = 0;
};

class baby : public baby_interface {
public:
    virtual const char* name0() const
    {
        return "My Baby";
    }

    virtual std::string name1() const
    {
        return "My Baby";
    }

    virtual const std::string& name2() const
    {
        return std::string("My Baby");
    } …
Run Code Online (Sandbox Code Playgroud)

c++

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

制作字符串的不同方法?

我是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
查看次数

标签 统计

c++ ×10

string ×5

arrays ×3

char ×2

android ×1

c++11 ×1

constants ×1

directx ×1

ios ×1

performance ×1

pointers ×1

static ×1

std ×1

types ×1

vector ×1

windows ×1