16得票3回答
在C语言中,我能否像在字符数组声明中一样,在指针声明中初始化一个字符串?

这两行代码是否可以实现相同的结果?如果我把这些代码放在一个函数中,那么在两种情况下字符串都存储在堆栈中吗?除了在第一行代码中不需要声明空终止符之外,是否有强烈的理由使用其中一种方式?char s[] = "string"; char* s = "string\0";

16得票6回答
为什么在C++中应该使用std::string而不是C风格的字符串?

在几乎每个发布的源代码中,都会出现“应该始终使用 std::string 而不是 C 风格字符串(char *)”的建议。虽然这个建议无疑是好的,但实际上被讨论的问题并不允许详细阐述建议的原因。本问题旨在作为占位符。 一个好的答案应该涵盖以下方面(详细说明): 为什么在 C++ 中应该...

15得票4回答
如何将字符数组用作字符串?

我知道C语言中的字符串实际上只是字符数组。所以我尝试了以下代码,但结果却很奇怪,比如会输出垃圾数据或程序崩溃:#include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } 这为什么不起作...

14得票9回答
如何在C++中有效地检查字符串是否包含特殊字符?

我试图寻找更好的方法来检查字符串中是否有特殊字符。在我的情况下,除了字母数字和下划线之外的任何东西都被视为特殊字符。目前,我有一个包含特殊字符的字符串,例如std :: string ="! @ # $%^&". 然后我使用 std::find_first_of() 算法来检查字符串中...

13得票7回答
如何编写更好的strlen函数?

我正在阅读《编写高质量代码第2卷》,其中展示了以下的strlen实现:int myStrlen( char *s ) { char *start; start = s; while( *s != 0 ) { ++s; } retu...

12得票8回答
strcmp的实现

我尝试实现strcmp: int strCmp(char string1[], char string2[]) { int i = 0, flag = 0; while (flag == 0) { if (string1[i] > string2...

12得票3回答
在C++/CLI中将C#中的String^转换为CString

我在编写我的应用程序时遇到了一个问题,需要帮助。 我正在使用MFC编码,并采用Common Language Runtime (CLR)来整合C# API。 但现在我卡在了将System::String^转换为CString上。 我正在使用以下代码:String^ csPass = gcn...

11得票2回答
整数的constexpr log10函数

所以我需要log10函数来找到存储给定整数所需的字符数。但我希望在编译时获得它,以便根据代码中定义的这些整数常量静态确定char数组的长度。不幸的是,log10不是一个constexpr函数,即使是整数版本也不行。我可以像这样制作一个整数版本: template <typename T...

11得票6回答
意外的printf输出

我刚刚发现了C编译器的非常奇怪的行为。这是非常简单的代码。我在许多在线C编译器上尝试过它,但结果总是相同的,这让我感到疯狂。#include <stdio.h> int main() { char Buffer[10] = "0123456789"; ...

11得票5回答
C-字符串数组初始化 - 是否可变?

可能有重复: 修改C字符串常量? 指向const char的指针 vs char数组 vs std::string 我知道这个问题可能已经被问烂了,但我有点困惑,而且我在SO或谷歌上没有找到确切的答案(我不确定是否正确 - C字符串的信息太多要筛选)。此外,我已经标记了它...