許多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