标签: cstring

什么是std :: string :: c_str()生命周期?

在我的一个程序中,我必须与一些可用的遗留代码进行交互const char*.

可以说我的结构看起来像:

struct Foo
{
  const char* server;
  const char* name;
};
Run Code Online (Sandbox Code Playgroud)

我的高级应用程序只处理std::string,所以我想用std::string::c_str()回来const char*指针.

但是它的寿命是c_str()多少?

我可以做这样的事情而不面对未定义的行为吗?

{
  std::string server = "my_server";
  std::string name = "my_name";

  Foo foo;
  foo.server = server.c_str();
  foo.name = name.c_str();

  // We use foo
  use_foo(foo);

  // Foo is about to be destroyed, before name and server
}
Run Code Online (Sandbox Code Playgroud)

或者我应该立即将结果复制c_str()到另一个地方?

谢谢.

c++ string cstring

92
推荐指数
3
解决办法
3万
查看次数

如何将CString和:: std :: string :: std :: wstring互相转换?

CString非常方便,同时std::string与STL容器更兼容.我在用hash_map.但是,hash_map不支持CString作为键,所以我想转换CStringstd::string.

编写CString哈希函数似乎需要花费很多时间.

CString -----> std::string
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

std::string -----> CString:

inline CString toCString(std::string const& str)
{
    return CString(str.c_str()); 
}
Run Code Online (Sandbox Code Playgroud)

我对吗?


编辑:

以下是更多问题:

我怎么能转换wstring,CString彼此?

//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring. 
CString src;
::std::wstring des(src.GetString());
Run Code Online (Sandbox Code Playgroud)

什么问题吗?

我怎么能转换std::wstring,std::string彼此?

c++ mfc cstring stdstring

69
推荐指数
5
解决办法
18万
查看次数

如何实现std :: string?

我很想知道如何实现std :: string以及它与c字符串的区别?如果标准没有指定任何实现,那么任何带有解释的实现都会很好,它如何满足标准给出的字符串要求?

c++ string std cstring

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

在C中str == NULL和str [0] =='\ 0'之间有什么区别?

我想知道的区别str == NULLstr[0] == '\0':

int convert_to_float(char *str, double *num)
{
    if ((str == NULL) || (str[0] == '\0'))
        return(-1);

    *num = strtod(str, (char **)NULL);
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我在Linux上使用gcc.

c gcc pointers cstring

52
推荐指数
6
解决办法
9731
查看次数

将C样式字符串转换为C++ std :: string

将C风格的字符串转换为C++的最佳方法是什么std::string?过去我用stringstreams 做过.有没有更好的办法?

c++ string cstring

33
推荐指数
4
解决办法
8万
查看次数

_T在CString中代表什么

"T"在字符串中表示什么.例如_T("Hello").我在需要unicode支持的项目中看到了这个.它实际告诉处理器的是什么

c++ unicode cstring

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

在Swift中使用C字符串,或者:如何将UnsafePointer <CChar>转换为CString

在Swift中使用标准C库函数时,我在传递C字符串时遇到了问题.作为一个简单的例子(仅用于演示问题),标准C库函数

char * strdup(const char *s1);
Run Code Online (Sandbox Code Playgroud)

接触Swift作为

func strdup(_: CString) -> UnsafePointer<CChar>
Run Code Online (Sandbox Code Playgroud)

这意味着返回值strdup()不能传递给另一个strdup()调用:

let s1 : CString = "abc"
let s2 = strdup(s1) // OK, s2 is a UnsafePointer<CChar>
let s3 = strdup(s2) // error: could not find an overload for '__conversion' that accepts the supplied arguments
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何CString从a 创建一个Swift UnsafePointer<CChar>,以便一个标准库函数返回的C字符串可以传递给另一个函数?

我能找到的唯一方法是(使用Swift语言中如何将字符串转换为CString的代码):

let s2a = String.fromCString(s2).bridgeToObjectiveC().UTF8String
let s3 = strdup(s2a)
Run Code Online (Sandbox Code Playgroud)

但我认为这并不令人满意,原因有两个:

  • 对于简单的任务来说太复杂了.
  • (主要原因:)上述转换仅在C字符串是有效的UTF-8字符串时有效,否则失败并出现运行时异常.但是C字符串是一个任意 字符序列,由NUL字符分隔.

备注/背景:当然,使用Swift String …

cstring swift

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

初始化字符*[]

问题在标题中,如何初始化char*[]并在C++中给它赋值,谢谢.

c++ arrays cstring

25
推荐指数
4
解决办法
6万
查看次数

为什么我首先要在strcat()之前使用strcpy()?

为什么此代码会产生运行时问题:

char stuff[100];
strcat(stuff,"hi ");
strcat(stuff,"there");
Run Code Online (Sandbox Code Playgroud)

但这不是吗?

char stuff[100];
strcpy(stuff,"hi ");
strcat(stuff,"there");
Run Code Online (Sandbox Code Playgroud)

c cstring

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

如何从C字符串中删除第一个字符?

谁能帮帮我吗?我需要删除C中的第一个字符char *.

例如, char * contents包含一个'\n'字符作为数组中的第一个字符.我需要检测并消除这个字符,在它被"消毒"后修改原始变量.

任何人都可以帮我代码吗?我对C完全不熟悉,似乎无法弄明白.

c string cstring

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

标签 统计

cstring ×10

c++ ×6

string ×4

c ×3

arrays ×1

gcc ×1

mfc ×1

pointers ×1

std ×1

stdstring ×1

swift ×1

unicode ×1