Форум программистов, компьютерный форум CyberForum.ru

Не сравниваются строки - C++

Восстановить пароль Регистрация
 
SteeLHeaD
1 / 1 / 0
Регистрация: 05.02.2013
Сообщений: 27
06.02.2013, 14:54     Не сравниваются строки #1
Сегодня мне понадобилось вызвать программу с аргументом команднйо строки
я посмотрел пример на
http://www.cplusplus.com/forum/beginner/35344/
и попробовал написать так же:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once
#include "stdafx.h"
#include "binder.h"
#include "logger.h"
#include <string>
#include <boost/lexical_cast.hpp>
using namespace std;
 
 
int main(int argc, char *argv[])
{
    if (argc!=2)
    {
        printf ( "Please, select config name: 'Pod02.exe 1' or 'Pod02.exe 2'");
        return 0;
    }
    else
    {
        printf ("%s", argv[1] );
        if ( argv[1]=="1" )
        {
          Бла бла бла;
        }
        if ( argv[1]=="2" )
        {
          Бла бла бла 2;
        }
    }
    return 0;
}
Использую Visual Studio 2010, задал при отладке подставлять "1" в качестве аргумента командной строки.
В результате: строка printf ("%s", argv[1] ); честно выводит "1".
А условие if ( argv[1]=="1" ) не выполняется, то есть до кода Бла бла бла; программа не доходит.
В чем может быть дело?

( я подозреваю, что разница в инклудах - то есть у меня работает "какой то другой оператор сравнения строк", чем в примере. Но как мне тогда добиться того же эффекта с моими инклудами? они мне нужны для кода Бла бла бла; )
Спасибо заранее.

Добавлено через 9 минут
Дополнение.
Интересно, что при помощи такого извращения
C
1
if ( boost::lexical_cast<std::string>( argv[1] )=="1")
я смог правильно сравнить строки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 14:54     Не сравниваются строки
Посмотрите здесь:

C++ Рассортировать строки динамической матрицы по наибольшему элементу строки.
C++ Строки, копирование всех цифр из одной строки в другую
C++ Отсортировать цифры, символы и буквы из строки в отдельные строки
Строки. Вывести на печать то слово этой строки, которое по алфавиту предшествует всем другим C++
C++ Даны строки s, s0. Найти количество вхождений строки s0 в строку s
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
06.02.2013, 14:55     Не сравниваются строки #2
Для сравнения строк типа char* используются функции strcmp и strncmp http://www.opennet.ru/man.shtml?topi...ry=3&russian=0
Второй вариант - можно из них создать объекты типа std::string и использовать оператор == http://www.cplusplus.com/reference/s...ing/operators/
Третий вариант - в примере значения целочисленные, и уже подключен boost::lexical_cast. Можно привести к инту и сравнивать уже числа.
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2013, 15:05     Не сравниваются строки #3
Ниже пример как прочесть два массива переданные через параметры
передать целый массив в качестве входных параметров для функции main()?


Не по теме:

Цитата Сообщение от SteeLHeaD Посмотреть сообщение
using namespace std;
Цитата Сообщение от SteeLHeaD Посмотреть сообщение
printf (
- после этого хочется иной раз застрелитьcя

Extsm
73 / 73 / 5
Регистрация: 15.04.2009
Сообщений: 126
06.02.2013, 15:10     Не сравниваются строки #4
Попробуй:
C++
1
if (strcmp(argv[1], "1") == 0)
Char* нельзя так сравнивать, это не std::string, для этого есть функция strcmp(...).
-=ЮрА=-
06.02.2013, 15:34     Не сравниваются строки
  #5

Не по теме:

Конкретное решение без string.h

C++
1
2
3
4
5
6
7
8
9
if ( argv[1][0]=='1' )
{
// Бла бла бла;
}
else
 if ( argv[1][0]=='2' )
{
//Бла бла бла 2;
}
[/quote]

Yandex
Объявления
06.02.2013, 15:34     Не сравниваются строки
Ответ Создать тему
Опции темы

Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru