我希望标题足以帮助解释需要什么。解决了这个问题后,我的大部分项目应该完成了。
当我这样做时
char e[1000] = "HELLO";
CString msg;
msg.Format(_T("%s"), e);
MessageBox(msg);
Run Code Online (Sandbox Code Playgroud)
消息框只是向我显示诸如“??????”之类的随机词 而不是我想要的“你好”。我该如何解决这个问题??
帮助将不胜感激。谢谢你
作为一个学习练习,我一直在研究自动类型转换在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) 有人可以解释为什么我在使用以下g ++编译器编译源代码时出现此错误
#include <cstdio>
#include <string>
using namespace std;
int main()
{
char source_language[50];
scanf("%16s\n",source_language);
int length = sizeof(source_language);
int sizeofchar = strlen(source_language);
printf("%d\n",sizeofchar);
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误
test.cpp:在函数'int main()'中:
test.cpp:31:错误:在此范围内未声明'strlen'
当我改变#include <string>为 #include <string.h> 或#include<cstring>,它工作正常,我需要弄清楚使用#include<string>和有什么区别#include<string.h>.非常感谢任何帮助
我在c ++窗口编码.
INT64 dirID = -1;
CString querySQLStr = _T("");
querySQLStr.Format(L"select * from ImageInfo where FolderPath=%64d;", dirID);
querySQLStr always like this:
select * from ImageInfo where FolderPath= 1214;
Run Code Online (Sandbox Code Playgroud)
使用%64d是对的吗?非常感谢
如何将 UTF-8 char* 格式的字符串转换为 CString?
我正在处理巨型(最多2GB)字符串及其在C++程序中的切片.在这种情况下,C风格的字符串似乎不可靠,但可以简单地切片(最后没有'\ 0').另一方面,据我所知,std :: string :: substr复制了切片,因此我应该为每个索引执行至少一个额外的加法运算(索引+基数),以保持内存使用的合理性.
出于好奇,我想知道不同的文件如何能够分配某些符号以将它们常规的 c 字符串文字更改为其他文字。
例如...
在 Objective-C 中,NSString 文字可以写成@"..."
在 C++ 中(我认为),C++ 字符串文字是这样写的S"..."
在wchar库中,wchar_t文字是writtelL"..."
谁能告诉我如何做一个像 MyClass 文字这样的字符串#"..."
谢谢
具有以下内容:
#include <set>
std::set<const char *> global = std::set<const char *>();
void x() {
const char *c = "a";
const char *d = "b";
global.insert(c);
global.insert(d);
}
int main() {
x();
for (std::set<const char *>::const_iterator iter=global.begin(), end=global.end(); iter!=end; ++iter) {
printf("%s\n", *iter);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
最后,正如预期的那样,我收到a并b打印出来.
然而,是否有任何保证,例如,如果该集合是一个bozo对象的一部分,那么它们一直持续到它bozo的生命周期结束?或者我必须strdup要确保字符串?
我创建了一个函数,它接受一个指向C-String数组中第一个元素的指针.这是阵列,以及我如何制作它:
char element1[60] = "ubunz";
char element2[60] = "uasdasffdnz";
char* array[10] = {element1,element2};
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个指向数组中第一个元素的指针:
char *pointertoarray = &array[0];
Run Code Online (Sandbox Code Playgroud)
然后我将指针传递给我做的函数:
void printoutarray(char *pointertoarray){
int i = 0;
while (i < 2){
printf("\n Element is: %s \n", *pointertoarray);
pointertoarray = pointertoarray + 1;
i = i+1;
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,数组永远不会打印出来.
我之前在C++中完成了这个程序,但我使用了STL字符串类型,并创建了一个指向字符串数组的指针.我认为我的问题在于我在C中创建一个字符串数组的方式,以及指向它的指针.
我是C语言和Loadrunner的新手.
如何在C中进行字符串连接
伪代码:
String second = "sec";
String fouth = "four";
System.out.println("First string" + second +"Third" + fouth);
Run Code Online (Sandbox Code Playgroud)