许多windows APIs都会获取指向缓冲区和大小元素的指针,但结果需要放入C++字符串中。 (我在这里使用的是Windows的Unicode所以他们wstrings)混合C++标准字符串和窗口API
下面是一个例子: -
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
// This is the method I'm interested in improving ...
wstring getComputerName()
{
vector<wchar_t> buffer;
buffer.resize(MAX_COMPUTERNAME_LENGTH+1);
DWORD size = MAX_COMPUTERNAME_LENGTH;
GetComputerNameW(&buffer[0], &size);
return wstring(&buffer[0], size);
}
int main()
{
wcout << getComputerName() << "\n";
}
我真正的问题是,这是写getComputerName功能,使得它适合的最佳方式C++更好,还是有更好的方法?我没有看到任何方式直接使用字符串,没有通过矢量直接使用,除非我错过了什么?它工作正常,但不知何故似乎有点难看。问题不在于特定的API,而仅仅是一个简单的例子。
好吧,我的例子是一个糟糕的,我用了一个载体,因为我可能直到运行时才知道我想要缓冲区有多大。我完全同意这个例子没有必要 – jcoder 2010-03-13 10:16:16
@JB嗯,我不认为有任何一般规则 - 你必须以你自己的方式处理你使用的每个API。这部分是因为整个API背后并没有一个完整的设计理念。 – 2010-03-13 10:23:45
好的,谢谢,真的,我只是想检查我不会错过任何明显的更好的方法来实现这个 – jcoder 2010-03-13 10:25:39