相关疑难解决方法(0)

string c_str()与data()

我已经阅读了几个地方,c_str()data()(在STL和其他实现中)之间的区别c_str()是总是空终止而data()不是.据我在实际实现中看到的,他们要么做同样的事情,要么做data()电话c_str().

我在这里错过了什么?在哪种情况下使用哪一个更正确?

c++ stl c-str

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

DeleteFile()不起作用

我正在尝试这个DeleteFile()功能,我在下面编写了这个程序.

#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main(){
    FILE * filetxt;
    // creat a file
    filetxt = fopen("C:\\Users\\Thomas\\Desktop\\filetxt.txt", "w");

    // delete the file 
    if (DeleteFile("\\\\.\\C:\\Users\\Thomas\\Desktop\\filetxt.txt") != 0){
        cout<<"success";
    }else{
        cout<<"fail";
    }
    cin;
}
Run Code Online (Sandbox Code Playgroud)

但该计划没有按照预期的那样发挥作用.创建的文件未删除.

输出是:

fail
Run Code Online (Sandbox Code Playgroud)

c c++ winapi

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

从std :: string创建CString的C++失败

在我的基于MFC的应用程序中,此代码:

std::string stdString("MappingName");
std::cout << "as String: " << stdString << std::endl;
CString cString(stdString.c_str());
std::cout << "as CString: " << cString << std::endl;
Run Code Online (Sandbox Code Playgroud)

生成此输出:

as String: MappingName
as CString: 01DEA060
Run Code Online (Sandbox Code Playgroud)

CString每次运行它的值都不同,但长度似乎是不变的.其他一些结果是042219B0042C4378.

我已经尝试了这个线程中讨论的每个变体,结果是一样的.我还试图将Visual Studio项目中的字符集使用Unicode字符集更改为使用多字节字符集,同样没有任何效果.

转换失败的原因是什么?

编辑:更多的测试表明,它的价值std::string似乎没有区别:

tmp as String: The quick brown fox jumps over the lazy dog
tmp as CString: 00EAAF88
Run Code Online (Sandbox Code Playgroud)

我还将字符集设置为Not Set,这也没有帮助.

c++ mfc c-strings stdstring visual-studio

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

标签 统计

c++ ×3

c ×1

c-str ×1

c-strings ×1

mfc ×1

stdstring ×1

stl ×1

visual-studio ×1

winapi ×1