Я не могу понять это. У меня есть приложение C++, который работает в режиме отладки точно так, как ожидается:Разный выход между выпуском и отладки
#include "stdafx.h"
#include <string>
#include <Windows.h>
#include <iostream>
using namespace std;
void truncateServer(std::string inString);
int _tmain(int argc, char *argv[])
{
char* server = argv[1];
truncateServer(server);
}
void truncateServer(std::string inString)
{
std::string server = "";
int whackCount = 0;
for (unsigned int i = 0; i < inString.length(); i++)
{
char c = inString[i];
if (whackCount < 3)
{
if (c == '\\') whackCount++;
else
server += c;
}
}
cout << server;
}
Например, если я позвоню сервер я хочу через его UNC-путь \\serverName\Share\
в отладить это дает мне именно то, что я хочу: servername
Однако, если я использую сборки выпуска я ничего не получаю:
Я удалил папку вывода релиза, но этот вопрос точно так же. Я могу только предположить, есть ли другая разница между приложениями выпуска и сборки, которые подвергли серьезную проблему с моим кодом? Или другое различие между выводами, которые мне нужно учитывать.
Что мне нужно сделать, чтобы получить ожидаемый результат?
Хмм, это ваш отладочный сборник ANSI и ваш выпускной сборник UNICODE? Кроме того, правильное объявление: 'int _tmain (int argc, TCHAR * argv [])', потому что в строках Unicode используются широкие символы. – SirDarius
Можете ли вы добавить запись в сборку выпуска, чтобы показать, получаете ли вы ожидаемые значения в разных точках? – user1118321
Не используйте '_tmain'. По причинам @SirDarius говорится: вы не знаете, чем это закончится. –